// pages/user/checkin.js
const api = require('../../utils/api');
const userManager = require('../../utils/userManager');

Page({
  data: {
    checkinDays: 0,  // 已连续签到天数
    userPoints: 0,  // 用户积分
    rewardList: [
      { day: '一', points: 20 },
      { day: '二', points: 30 },
      { day: '三', points: 50 },
      { day: '四', points: 80 },
      { day: '五', points: 130 },
      { day: '六', points: 180 },
      { day: '七', points: '神秘大礼包' }
    ],
    hasCheckedToday: false,  // 今日是否已签到
    loading: false, // 加载状态
    totalDays: 0 // 累计签到天数
  },

  onLoad: function () {
    // 设置导航栏标题
    wx.setNavigationBarTitle({
      title: '签到中心',
    });
    
    // 获取签到信息
    this.getCheckinInfo();
  },
  
  onShow: function() {
    // 页面显示时刷新签到信息
    if (userManager.isLoggedIn()) {
      this.getCheckinInfo();
    } else {
      // 未登录，跳转到登录页
      wx.navigateTo({
        url: '/pages/user/login'
      });
    }
  },

  // 获取签到信息
  getCheckinInfo: function () {
    // 显示加载中
    this.setData({ loading: true });
    
    // 调用签到信息API
    api.checkin.getInfo()
      .then(res => {
        if (res && res.success && res.data) {
          // 更新页面数据
          this.setData({
            checkinDays: res.data.checkinDays,
            hasCheckedToday: res.data.hasCheckedToday,
            userPoints: res.data.userPoints,
            totalDays: res.data.totalDays || 0,
            // 如果后端有返回奖励列表，则使用后端的
            rewardList: res.data.rewardList || this.data.rewardList
          });
        } else {
          wx.showToast({
            title: res.message || '获取签到信息失败',
            icon: 'none'
          });
        }
      })
      .catch(err => {
        wx.showToast({
          title: '获取签到信息失败',
          icon: 'none'
        });
        console.error('获取签到信息失败:', err);
      })
      .finally(() => {
        // 隐藏加载中
        this.setData({ loading: false });
      });
  },

  // 返回上一页
  onTapBack: function () {
    wx.navigateBack();
  },

  // 点击签到按钮
  onTapSignIn: function () {
    // 检查是否已签到
    if (this.data.hasCheckedToday) {
      wx.showToast({
        title: '今日已签到',
        icon: 'none'
      });
      return;
    }
    
    // 显示加载中
    this.setData({ loading: true });
    wx.showLoading({
      title: '签到中...',
    });
    
    // 调用签到API
    api.checkin.doCheckin()
      .then(res => {
        if (res && res.success && res.data) {
          // 更新签到信息
          this.setData({
            checkinDays: res.data.checkinDays,
            hasCheckedToday: true,
            userPoints: res.data.userPoints
          });
          
          // 根据是否特殊奖励显示不同提示
          if (res.data.isSpecialReward) {
            wx.showToast({
              title: '恭喜获得神秘大礼包',
              icon: 'success',
              duration: 2000
            });
          } else {
            wx.showToast({
              title: `签到成功 +${res.data.points}积分`,
              icon: 'success',
              duration: 2000
            });
          }
        } else {
          wx.showToast({
            title: res.message || '签到失败',
            icon: 'none'
          });
        }
      })
      .catch(err => {
        wx.showToast({
          title: '签到失败，请重试',
          icon: 'none'
        });
        console.error('签到失败:', err);
      })
      .finally(() => {
        // 隐藏加载中
        this.setData({ loading: false });
        wx.hideLoading();
      });
  },

  onShareAppMessage: function () {
    // 自定义分享内容
    return {
      title: '每日签到领好礼',
      path: '/pages/user/checkin',
      imageUrl: '/images/share_image.png' // 分享图片
    };
  }
});